<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      html,
      body,
      canvas {
        padding: 0;
        margin: 0;
        width: 100%;
        height: 100%;
      }
    </style>
  </head>
  <script>
    // 缓存几种金币图片为DOM元素，避免canvas绘制时还需要异步读取图片
    function loadImgs(arr) {
      return new Promise((resolve) => {
        let count = 0;
        // 循环图片数组，每张图片都生成一个新的图片对象
        const len = arr.length;
        for (let i = 0; i < len; i++) {
          // 创建图片对象
          const image = new Image();
          // 成功的异步回调
          image.onload = () => {
            count++;
            arr.splice(i, 1, {
              // 加载完的图片对象都缓存在这里了，canvas可以直接绘制
              img: image,
              // 这里可以直接生成并缓存离屏canvas，用于优化性能，但本次不用，只是举个例子
              // offScreenCanvas: this.createOffScreenCanvas(image),
            });
            // 这里说明 整个图片数组arr里面的图片全都加载好了
            if (count == len) {
              this.preloaded = true;
              resolve();
            }
          };
          image.src = arr[i].img;
        }
      });
    }
    var arr = [
      {
        img:
          "https://dss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2534506313,1688529724&fm=26&gp=0.jpg",
      },
      {
        img:
          "https://dss3.baidu.com/-rVXeDTa2gU2pMbgoY3K/it/u=1189779147,4248115718&fm=202&mola=new&crop=v1",
      },
    ];

    loadImgs(arr);
    console.log(arr);
    function draw() {
      // var canvas = document.querySelector("#tutorial");
      // var ctx = canvas.getContext("2d");
      // ctx.fillStyle = "rgb(200,0,0)";
      // ctx.fillRect(10, 10, 55, 50);
      // ctx.fillStyle = "rgba(0, 0, 200, 0.5)";
      // ctx.fillRect(30, 30, 55, 50);
    }
  </script>
  <body onload="draw();">
    <canvas id="tutorial" width="100vw" height="100vh">
      current stock price: $3.15 +0.15
    </canvas>
  </body>
</html>
